# -*- coding: utf-8 -*-

num = 0xff # 十六进制
print("num=",num)
num = 10_000_000 # 下划线分隔数字
print("num=",num)
print("\\n")
print('''I
love
you''')
print(r"hello \n world") # 取消了转义字符变成纯字符
if not False:
    print("yes")
if True and True:
    print("yes")
if True or False:
    print("yes")
a = 'ABC'
b = a
a = 'XYZ'
print(b) # 输出"ABC"

print(ord('A'))
print(chr(0b01001110_00101101)) # 使用Unicode，输出'中'
print('\u4e2d\u6587') # 表示Unicode字符的转义序列，输出'中文'

x = b'ABC'
print(x)

# list内元素可以不同数据类型甚至可以是list
lst0=['ABC',12,True,[1,2,3]]
print(lst0[-1]) # 取最后一个元素，输出[1,2,3]
print(lst0[-2]) # 取倒数第二个元素，输出True
lst0.append('nihao') # 追加元素到末尾
print(lst0) # 输出['ABC', 12, True, [1, 2, 3], 'nihao']
lst0.insert(1,"'hello'") # 在指定位置插入元素
print(lst0) # 输出['ABC', "'hello'", 12, True, [1, 2, 3], 'nihao']
p=lst0.pop() # 删除末尾元素
print(p) # 输出'nihao'
print(lst0) # 输出['ABC', "'hello'", 12, True, [1, 2, 3]]
p=lst0.pop(1) # 删除指定位置元素，输出"'hello'"
print(p) # 输出"'hello'"
print(lst0) # 输出['ABC', 12, True, [1, 2, 3]]
lst0[0]='abc' # 赋值方式直接修改
print(lst0) # 输出['abc', 12, True, [1, 2, 3]]
print(len(lst0)) # 输出长度=4

# tuple和list非常类似，但是tuple一旦初始化就不能修改
tp=() # 定义空元组
tp=(1,) # 定义单元素元组，必须加逗号，否则会被识别为整数

a=2
if a>0:
    print("大于0")
elif a<0:
    print("小于0")
else:
    print("等于0")
    
# match-case除了匹配个体值，也能与if配合使用
match a:
    case x if x>0:
        print("大于0")
    case x if x<0:
        print("小于0")
    case _:
        print("等于0")
        
d={'ben':18,'alice':19,'tom':20} # 定义字典，键值对
age0=d['ben'] # 通过键获取值，输出18
d['megumi']=19 # 添加键值对

# 下标了访问不存在的key会报错，get更安全，key不存在返回None
d.get('megumi') # 获取键值对，输出19
a=d.get('sakura') # 返回None
a=d.get('sakura',18) # 指定key不存在时返回值
a=d.pop('alice') # 删除键值对，输出19
flag='ben' in d # 判断key是否存在，输出True


s={1,2,3} # 所以也是大括号{}
s=set([1,2,3]) # 通过set函数创建集合，这里将list转为set
s={1,1,2,2,3,3} # 重复元素会被自动去除，输出{1,2,3}

# 通过add(key)方法可以添加元素到set中，可以重复添加，但不会有效果：
s.add(4) # 添加元素，输出{1,2,3,4}
s2={3,4,5,6}
a=s & s2 # 交集，输出{3,4}
a=s | s2 # 并集，输出{1,2,3,4,5,6}

a=[1,2,5,4]
a.sort() # sort()方法会对list进行排序
print(a) # 输出[1,2,4,5]

a='ABC'
# 字符串对象即str是不可变对象，对字符串的任何改动，都会生成新的字符串，当然变量a的指向的字符串还是原来那个
b=a.replace('A','a') # replace()返回一个新的字符串
print('b:%s,a:%s' % (b,a)) # 输出b:aBC,a:ABC
